古い Apache 1 のページをとりあえず更新したものです。
Apache はたいていの Linux などのディストリビューションに入っているはずですので,ソースからコンパイルする必要はありません。 ソースからのコンパイルは,最新版を追い求める人だけお試しください。
ソースコードは The Apache Software Foundation の The Apache HTTP Server Project で配布されています。ダウンロードは 適当なミラー から行いましょう(例えば RingServer の /pub/net/apache/httpd/ にもミラーされています)。 Apache にはバージョン 1.x のものと 2.x のものがありますが,ここでは 2.x のもの(httpd-2.X.YY.tar.gz といったファイル名)を使います。
すでに古い Apache がインストールされているなら消しておきます。
/etc/rc.d/init.d/httpd stop rpm -e apache mod_ssl
あらかじめユーザ www,グループ www を作っておきます(どんな名前でもかまいません。 最近の Vine Linux では apache/apache というユーザ/グループがあるようですのでそれを流用するのがいいでしょう)。
Vine Linux 4.1では apt-get install openssl-devel しておきます。
まずソースを展開してコンパイルします。 後で PHP を使うために Dynamic Shared Object の設定 --enable-so をしておきます。
cd httpd-2.2.4 CFLAGS="-O2" ./configure --enable-so --enable-auth-digest --enable-dav --enable-ssl --enable-rewrite make make install
デフォルトのインストール場所は /usr/local/apache2 以下になります(Apache 1.x では /usr/local/apache でした)。 場所を変えるには configure に --prefix=/opt/local/apache2 のようなオプションを付けます。
次に,/usr/local/apache2/conf にある httpd.conf を編集します。
User daemon Group daemon
となっているところは,前にも書いたように,できれば www あるいは apache といったユーザ/グループを作って,
User www Group www
などとします。
ServerAdmin は適当なメールアドレスにします。 例えば
ServerAdmin webmaster@example.ac.jp
として,webmaster を管理人の別名として登録するといいでしょう。
ServerName はホスト名です。たとえば
ServerName www.example.ac.jp:80
とします。 実験的に自分のマシンで動かすなら 127.0.0.1 でもかまいません。
<Directory "/usr/local/apache2/htdocs">
から
</Directory>
の中で一般的な設定をします。最初は
Options Indexes FollowSymLinks AllowOverride None
となっていますが,自由度を最大限に上げるには
Options All AllowOverride All
とします。 All に加えて MultiViews オプションも付けると content negotiation を自動で行いますが,パフォーマンスはかなり落ちます。 この用途には .var ファイルを使うほうがいいでしょう。 AllowOverride を All にするのは,後で .htaccess で自由に設定を変えるためです。
次の
DirectoryIndex index.html
となっているところは,たとえば
DirectoryIndex index.html index.htm index.php index.cgi index.pl index.rb index.html.var
といった具合にすると,index.html 以外のファイル名でも省略できるので,便利です。
<FilesMatch "^\.ht"> Order allow,deny Deny from all </FilesMatch>
は見せないファイルの設定です。同様に
<FilesMatch "~$"> Order allow,deny Deny from all </FilesMatch>
などとしておくとEmacsのバックアップファイルが見えてしまうことを防ぎます。
CustomLog logs/access_log common
をコメントアウトして,代わりに
CustomLog logs/access_log combined
とするとログファイルにuser agentやrefererの情報も入ります。
MIME type の不明なバイナリファイルがブラウザに表示されてしまうことを防ぐために
DefaultType text/plain
を
DefaultType application/octet-stream
にしておくといいかもしれません(場合によります)。
CGIを使うなら,
#AddHandler cgi-script .cgi
は,コメントを外して,ついでに Perl や Ruby のために次のようにしておくと便利です。
AddHandler cgi-script .cgi .pl .rb
PHP を使うなら,PHP インストール時に httpd.conf が書き換えられて次のいずれかの行が追加されるはずです。
LoadModule php4_module modules/libphp4.so LoadModule php5_module modules/libphp5.so
さらに次の2行がなければ追加しておきます。
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
言語関係は 2.2 では extra/httpd-languages.conf に移りました。 ここでは LanguagePriority リストの先頭に ja を持っていきます。 なお,古い Apache では次の行がありましたが,これはコメントアウトしておかないと文字化けが起こります。
AddDefaultCharset ISO-8859-1
起動,終了,再起動はそれぞれ
/usr/local/apache2/bin/apachectl -k start /usr/local/apache2/bin/apachectl -k graceful-stop /usr/local/apache2/bin/apachectl -k graceful
です。 /etc/rc.d/rc.local の下のほうに
/usr/local/apache2/bin/apachectl -k start
と書いておいてもいいのですが,今のVineなどRed Hat系の方式では次のようにします。
cp build/rpm/httpd.init /etc/rc.d/init.d/httpd
ここで /etc/rc.d/init.d/httpd の中のパス名を適宜直します。例えば httpd.pid は /usr/local/apache2/logs の中に入ります。
/sbin/chkconfig --level 345 httpd on /etc/rc.d/init.d/httpd start
/etc/logrotate.d/apache2 は /var/log/httpd と /var/run を /usr/local/apache2/logs に直しておきます。
SSL対応にするには,configure に --enable-ssl を付けます。 openssl,openssl-devel がインストールされていなければなりません。
cd /usr/local/apache2/conf ln -s /etc/httpd/conf/ssl.crt . ln -s /etc/httpd/conf/ssl.key .
/usr/local/apache2/bin/apachectl -k startssl
Apache 2.2 では startssl ではなく単に start とします。 これで一応できますが,ちゃんとした証明書が欲しいところです。 ここでは CAcert という無料のCAで証明書を取得することにします。
上記の証明書でもいいのですが,最初からやってみます。
cd /etc/httpd/conf # Vineなら/etc/apache2/conf /usr/bin/openssl genrsa 1024 > ssl.key/server.key /usr/bin/openssl req -new -key ssl.key/server.key -out ssl.csr/server.csr
いろいろ聞いてきます(実際にCAcertで使われるのはCommon Nameだけ):
Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Mie Locality Name (eg, city) []:Tsu Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mie University Organizational Unit Name (eg, section) []:Okumura Lab Common Name (eg, YOUR name) []:oku.edu.mie-u.ac.jp Email Address []:root@oku.edu.mie-u.ac.jp
残りはすべてEnterだけ。 この server.csr を CAcert に送れば無料で証明書を発行してもらえますので,それを ssl.crt/server.crt にしてApacheを再起動します。
別の手段として,自己署名証明書を作ってしまうことも考えられます。 もともとの server.crt も自己証明証明書ですが,名前等が正しくないので,次のように打ち込んで,名前等を直すことができます。
openssl req -new -key ../ssl.key/server.key -x509 -days 365 -out server.crt
WebDAV は HTTP 上に構築された次世代のファイル共有プロトコルです。 .Mac の iDisk も AFS から WebDAV ベースに変更されました。
Apache 2 では ./configure に --enable-dav=yes を付けていれば,httpd.conf に次を追加するだけで WebDAV が使えます。
<Location /dav> DAV on </Location> DAVLockDB /usr/local/apache2/var/DAVLock
/usr/local/apache2/htdocs/dav と /usr/local/apache2/var/ はユーザ www が書き込めるようにしておきます。 後者のディレクトリにはロックファイル DAVLock.dir,DAVLock.pag が入ります。
これで,Mac OS X なら Finder で「移動」→「サーバへ接続」で http://サーバ名/dav とすればつながります。
サーバ上の場所は /usr/local/apache2/htdocs/dav になります。 これが嫌なら次のようにして別の場所を指定できます。
Alias /dav /path/to/somewhere
これだけでは誰でもアップロード/ダウンロードできてしまいますので,例えば次のようにダイジェスト認証を設定します。
<Location /dav> DAV on AuthType Digest AuthName "DAV" AuthDigestFile /path/to/somefile Require valid-user </Location>
/usr/local/apache2/bin/htdigest -c /path/to/somefile DAV someuser
と打ち込むと someuser さんのパスワードを聞いてきますので,2回打ち込みます。
これで Mac OS X なら日本語ファイル名(utf-8)を含め何の問題もないようです。 ドラッグ&ドロップやダブルクリックができます。 /Volumes/dav にマウントされますので,Emacs などでもローカルファイルと同じように編集できます。 Windows XP(マイネットワーク→ネットワークプレースを追加する)ではいろいろトラブルが生じるとのことです。
UNIX互換OSのコマンドラインで使えるクライアント cadaver があります。 ちょうど ftp コマンドのように使えて便利です。
個人のホームディレクトリに public_html ディレクトリを作り,その中に index.html を入れてうまくいかない場合は,たいていホームディレクトリのパーミッションが悪いのでしょう。 700ではうまくいきません。 少なくとも 701 にしておく必要があります。
これ以外に,SELinuxが設定されている場合は,
restorecon -R /home
それでも駄目なら
chcon -R -h -t httpd_sys_content_t /home
のようなことをする必要があるかもしれません。
あと,suEXECがオンになっている最近の設定で,番号の低いグループでCGIが動かないといったトラブルが発生するようです。suEXECをオフにするには,/usr/sbin/suexec を別の名前に変えて,apachectl restart します。Vine Linux 4.* では /usr/lib/apache2/suexec を削除またはリネームして /usr/sbin/apache2ctl restart します。これをしても,apt-get で更新した際にまた入ってしまうことがあり,注意を要します。
http://www.srvjp.net/?cx=003329386177465831517%3Ajdvs2yb580y&q=apache&sa=Search&cof=FORID%3A9#990